Streaming media is multimedia that is constantly received by, and normally presented to, an end-user (using a client) while it is being delivered by a streaming provider (using a server). Several protocols exist for streaming media, including the smooth streaming protocol introduced by MICROSOFT™ Internet Information Server (IIS). Prior to smooth streaming, most streaming media technologies used tight coupling between server and client with a stateful connection. The stateful connection between client and server created additional server overhead (because the server tracked a current state of each client) and limited the scalability of the server.
MICROSOFT™ IIS Smooth Streaming (part of IIS Media Services, referred to herein as smooth streaming) provides stateless communication between the client and server by breaking media up into chunks that are individually addressable and can be individually requested by clients. For a particular media event or content item, the smooth streaming server provides a manifest file that describes each of the chunks that comprise the event. For example, a one-minute video provided by smooth streaming may include 60 one-second audiovisual chunks. Each chunk contains metadata and media content. The metadata may describe useful information about the media content, such as the bit rate of the media content, where the media content fits into a larger media element, a codec used to encode the media content, and so forth. The client uses this information to place the chunk into a storyboard of the larger media element and to properly decode and playback the media content. The chunks can be in any format, such as Motion Picture Experts Group (MPEG) 4 boxes or other containers. A smooth streaming client plays a media event to a user by reading the manifest and regularly requesting chunks from the server. The user may also skip around (e.g., seek, fast forward, rewind) and the client can provide these behaviors by requesting later or earlier chunks described by the manifest. For live events, the server may provide the manifest to the client piecemeal, so that the server informs the client of newly available chunks as they become available.
Each chunk may have its own Uniform Resource Locator (URL), allowing chunks to be cacheable by existing Internet infrastructure. The Internet contains many types of downloadable media content items, including audio, video, documents, and so forth. These content items are often very large, such as video in the hundreds of megabytes. Users often retrieve documents over the Internet using Hypertext Transfer Protocol (HTTP) through a web browser. The Internet has built up a large infrastructure of routers and proxies that are effective at caching data for HTTP. Servers can provide cached data to clients with less delay and by using fewer resources than re-requesting the content from the original source. For example, a user in New York may download a content item served from a host in Japan, and receive the content item through a router in California. If a user in New Jersey requests the same file, the router in California may be able to provide the content item without again requesting the data from the host in Japan. This reduces the network traffic over possibly strained routes, and allows the user in New Jersey to receive the content item with less latency.
While smooth streaming provides a great experience for viewing streaming media over the Internet and other networks, users often want to view (and producers of content often want to provide) content that comes from different sources or from different existing content items. For example, a sports network may want to provide a highlight video at the end of each day that includes some new commentary and some selections from earlier media events. Today the sports network can provide links to each video, but users may not want to view dozens of different video streams or files. Producers of content do not want to re-encode or repackage each earlier content item for release as a new content item for these types of purposes. Only by repackaging the content can the publisher provide the user with familiar smooth streaming controls, such as skipping forward and backward in a stream. In many cases, the producer may want to provide quick turnaround to create highlights using a combination of on-demand and live assets immediately after an event or even as an event is still on-going (e.g., for late joining viewers of the event).